package com.lj.common_web.request;

import cn.hutool.core.io.IoUtil;
import com.lj.common_web.annotation.RequestBodyDecrypt;
import org.springframework.core.MethodParameter;
import org.springframework.http.HttpInputMessage;

import java.io.IOException;
import java.io.InputStream;

/**
 * @author luojing
 * @since 2025/5/30 16:51
 * 请求体解密器
 */
public interface RequestBodyDecipher {

    /**
     * 解密
     *
     * @param inputMessage 请求体中的消息
     * @param parameter    方法参数
     * @param annotation   请求体注解
     * @return 解密后的数据流
     */
    default InputStream decrypt(HttpInputMessage inputMessage, MethodParameter parameter, RequestBodyDecrypt annotation) throws IOException {
        return IoUtil.toUtf8Stream(decrypt(IoUtil.readUtf8(inputMessage.getBody()), parameter, annotation));
    }

    /**
     * 解密
     *
     * @param body       请求体
     * @param parameter  方法参数
     * @param annotation 请求体注解
     * @return 解密后的字符串
     */
    String decrypt(String body, MethodParameter parameter, RequestBodyDecrypt annotation);
}
